package syg._03_activiti_start;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.ProcessInstance;
import org.junit.Test;

/**
 * @author SYG
 */
public class _01_Start {

    /**
     * 启动流程实例时,
     *      解析bpmn文件获取负责人等信息并入库
     * act_hi_actinst:流程实例的执行历史(即看一个流程实例执行了哪些任务)
     * act_hi_identitylink:流程参与者的历史信息
     * act_hi_procinst:流程实例的历史信息(即每产生一个流程实例,就向此表插入一条数据)
     * act_hi_taskinst:任务的历史信息
     * act_ru_execution:流程执行的信息
     * act_ru_identitylink:流程参与者的信息
     * act_ru_task:任务信息
     */
    @Test
    public void test1() {
        // 1,创建ProcessEngine
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 2,获取RunTimeService(因为我们要启动流程,启动流程相关的service是RuntimeService)
        RuntimeService runtimeService = processEngine.getRuntimeService();
        // 3,根据流程定义Id启动流程(流程定义的id,是我们在画bpmn文件时指定的key,也可以使用数据生成时的id,有对应的方法),并得到流程实例
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myEvection");
        // 4,流程启动以后,自然可以获取流程实例的信息
        System.out.println("流程实例名称=" + processInstance.getName());
        System.out.println("流程实例对应的部署id=" + processInstance.getDeploymentId());
        System.out.println("流程实例的id(这个id是表中的id)=" + processInstance.getId());
        System.out.println("流程实例对应的流程id=" + processInstance.getProcessDefinitionId());
        System.out.println("流程实例的id(实例id与字段id一致)=" + processInstance.getProcessInstanceId());
        System.out.println("" + processInstance.getActivityId());

    }

}
